﻿namespace MicroCloud.Authorization
{
    /// <summary>
    /// 模块依赖的功能信息，用于提取模块信息Module时确定模块依赖的功能（模块依赖当前功能和此特性设置的其他功能）
    /// </summary>
    [AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = false)]
    public class DependOnFunctionAttribute : Attribute
    {
        #region "属性"
        #region "获取或设置 区域名称"
        /// <summary>
        /// 获取或设置 区域名称，为null（不设置）则使用当前功能所在区域，如要表示无区域的功能，需设置为空字符串""
        /// </summary>
        public string Area { get; set; }
        #endregion
        #region "获取或设置 控制器名称"
        /// <summary>
        /// 获取或设置 控制器名称，为null（不设置）则使用当前功能所在控制器
        /// </summary>
        public string Controller { get; set; }
        #endregion

        #region "获取 功能名称Action"
        /// <summary>
        /// 获取 功能名称Action，不能为空
        /// </summary>
        public string Action { get; }
        #endregion

        #endregion

        #region "构造函数"
        #region "初始化一个模块依赖的功能信息的新实例"
        /// <summary>
        /// 初始化一个模块依赖的功能信息 <see cref="DependOnFunctionAttribute"/> 的新实例
        /// </summary>
        /// <param name="action"></param>
        public DependOnFunctionAttribute(string action)
        {
            Action = action;
        }
        #endregion

        #endregion

    }

}
